import Vue from 'vue'
import Vuex from 'vuex'
// 1. 导入包
import createPersistedState from 'vuex-persistedstate'

import { getUserAPI } from '@/api/user.js'
Vue.use(Vuex)
// 当前项目，业务简单，不需要拆模块
export default new Vuex.Store({
  // 防止无意间修改vuex 的内容
  // process.env.NOFE_ENV 是一个全局的变量，不需要定义，即可使用
  // 它的值只有两个 production 和 development
  strict: process.env.NODE_ENV !== 'production',
  // vuex 插件
  plugins: [createPersistedState()],
  state: {
    // 1. 登录成功之后，需要把 token，存储到这个位置
    token: '',
    // 用户的基本信息，默认为空对象
    user: {}
  },
  mutations: {
    // 2. 定义修改的 token 值的 mutation 函数
    updateToken(state, token) {
      state.token = token
    },
    // 更新用户的信息
    updateUser(state, obj) {
      state.user = obj
    }
  },
  actions: {
    // 发起请求，获取用户的基本信息
    async initUser(ctx) {
      // 如果请求成功，则调用相应的 mutation 函数，把用户信息，存储到 state 中
      const { data: res } = await getUserAPI()
      // console.log(res)
      if (res.code === 0) {
        // 获取数据成功
        ctx.commit('updateUser', res.data)
      }
    }
  },
  modules: {
  }
})
